package com.resou.reader.utils;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.internal.LinkedTreeMap;
import com.google.gson.reflect.TypeToken;
import com.resou.reader.ReSouApplication;

import java.lang.reflect.Type;
import java.util.List;

public class GsonUtils {
    /**
     * 将复杂集合转为实体bean
     *
     * @param linkedTreeMap
     * @param <T>
     * @return
     */
    public static String fromJsonToJavaBean(LinkedTreeMap linkedTreeMap) {
        Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
        String jsonString = gson.toJson(linkedTreeMap);
        return jsonString;
    }

    /**
     * 将json转为实体《普通实体类》
     *
     * @param json
     * @param type
     * @param <T>
     * @return
     */
    public static <T> T fromJson(String json, Class<T> type) {
        return ReSouApplication.gson.fromJson(json, type);

    }

    /**
     * 将json转为实体集合《复杂类》
     *
     * @param json
     * @param <T>
     * @return
     */
    public static <T> List<T> listFromJson(String json) {
        return ReSouApplication.gson.fromJson(json, new TypeToken<List<T>>() {
        }.getType());
    }

    /**
     * 将json转为实体集合《复杂类》
     *
     * @param json
     * @param <T>
     * @return
     */
    public static <T> List<T> listFromJson(String json, Type type) {
        return ReSouApplication.gson.fromJson(json, type);
    }
}
